'''last update @2025-01-13
  添加录像指定功能
'''

from datetime import datetime
import os
import shutil

### 常量定义
MAME = r'mame.exe'
PARAMS = '-plugin autofire,inputmacro,cheat -w -keyboardprovider win32'
PARAMS += r' -rompath ..\MameRoms;E:\Emu\游聚游戏平台0.7.55\resource\roms'
PARAMS += r' -cheatpath .\cheat'
PARAMS += r' -language Chinese_Simplified'
#PARAMS += r' -record temprecord'
ROMS = [ # 可选roms列表,每一项格式为:[rom文件, 游戏名称]
  #['kovplus', '三国战纪1-119'], # 密室bug依然存在,不能用
  ['kov2p', '三国战纪2群雄争霸(205)'],
  ['kov2nl_302cn', '三国战纪2盖世英雄(302)'],
  #['kov2106', '三国战纪2(106)'],
  ['orleg2_104cn', '西游释厄传2(104cn)'],
  #['kov3', '三国战纪3(104)'],
  ['nbbatmanu', '忍者棒球(美版)'], #无法共享游聚,只需parent=nbbatman
  ['shadfrcej', '变身忍者(日)'], #使用世界版的rom = shadfrce,可共享游聚但不好
  ['moomesa', '西部牛仔'],
  ['ssriders', '落日骑士'],
  ['gunbird', '武装飞鸟1'], # 世界版不退流程!不能共享游聚
  #['gunbirdj', '武装飞鸟1(日)'], # 只需parent=gunbird,不能共享游聚
  ['gunbird2', '武装飞鸟2'], # 设定国际版B不退流程,不能共享游聚
  ['espgal', '长空超翼神1'], # 不能共享游聚
  ['espgal2', '长空超翼神2'],
  ['sonicwi', '四国战机1(日)'], #parent=aerofgt
  ['donpachi', '首领蜂'],
  ['ddonpach', '怒首领蜂1(原)'], #parent=ddonpach
  #['ddonpachj', '怒首领蜂1(日)'], #parent=ddonpach
  #['ddp2j', '怒首领蜂2(日)'], #parent=ddp2
  #['ddp3', '怒首领蜂3'], # 其实就是大往生白版的海外版,难度略低于日版,不能共享游聚
  ['ddpdojt', '怒首领蜂大往生魂'], # 中文版,有easy模式
  ['ddpdojblka', '怒首领蜂大往生黑版'], #parent=ddp3,内含白版可选
  ['ddpdfk', '怒首领蜂大复活'],
  #['dfkbl', '怒首领蜂大复活(黑版)'],
  #['batsugun', '疯狂枪支'],
  #['batsugunsp', '疯狂枪支特别版'],
  #['mahoudai', '魔法大作战(日版)'], # 日版比欧版难
  ['sstriker', '魔法大作战(欧版)'],
  ['shippumd', '疾风魔法大作战(日)'], #parent=kingdmgp
  ['mushisam', '虫姬1'],
  ['futari15', '虫姬2(v1.5)'],
  ['futaribl', '虫姬2(黑版)'],
  #['shikigam', '式神之城1'], # 只能用mame运行,arcade不行
  #['shikgam2', '式神之城2'], # 能运行但极端的卡,提示为红色模拟未完成
  #['shikiga3', '式神之城3'], # 运行不能
  #['gwing2', '雷鸟之翼2'], # 运行不能
  ['tengai', '战国之刃(世界版)'], # 世界版不退流程!不能共享游聚
  #['tengaij', '战国之刃(日版)'], # 退流程的日版...
  ['dmnfrnt', '魔域战线'],
  #['deathsml', '死亡微笑1'],
  ['dsmbl', '死亡微笑1(黑版)'],
  #['mmpork', '骑猪少女'],
  #['ket', '绊地狱'],
  #['ibara', '铸蔷薇'],
  #['ibarablk', '铸蔷薇黑版'],
  #['pinkswts', '粉蔷薇'],
  #['dfeveron', '弹铳Feveron'], # 使用parent=feversos
  #['deathsm2', '死亡微笑2'], # 运行不能
  #['mslug2t', '合金弹头2(Turbo)'], # 依然很卡
  #['mslug6', '合金弹头6'], # 模拟非常糟糕
  #['darius', '大流士1'],
  #['darius2', '大流士2'],
  #['dariusg', '大流士外传'],
  #['gdarius2', 'G大流士'],
  #['soldivid', '太阳表决'],
  ['dragnblz', '龙之光辉'], # 世界版不退流程!不能共享游聚
  ['s1945p', '打击者1945加强版'], # 无法共享游聚
  ['s1945iii', '打击者1945 3代(1999)'], # 无法共享游聚
  ['aerofgts', '四国战机特别版'],
  
  ## 以下为共享游聚目录中的游戏
  ['kov115', '三国战纪1-115'],
  ['bucky', '宇宙野兔'],
  ['espradej', '长空超少年(日)'], #游聚只有parent=esprade
  #['batrider', '蝙蝠骑警'], #游聚无法运行但有rom
  ['guwange', '狱门山物语'],
  ['grdians', '电神魔傀2'],
  ['samuraia', '战国ace(世界版)'], # 世界版不退流程
  ['prehisle', '原始岛1'],
  ['gundhara', '铳弹岚'],
  ['s1945', '打击者1945 1代'],
  ['s1945ii', '打击者1945 2代'],
  #['batcir', '战斗回路'],
  #['s1945iii', '打击者1945 3代(1999)'], # 无法共享游聚,删除
  ['fixeight', '地狱英雄传说'],
  ['theglad', '神剑伏魔录'], # 无法共享游聚
  #['area88', '战区88(日版)'],
  ['sonicwi3', '四国战机3'],
  #['neobombe', '炸弹人'],
  #['hook', '铁钩船长(美版)'], # 无法共享游聚
  #['3wonders', '三个奇迹'],
  #['wonder3', '三个奇迹(日版)'],
  ['mslug', '合金弹头1']
]

### 变量定义
index = 0 # 输入编号
romName = '' # 选择的rom文件
command = '' # 命令行指令
needReplay = False # 是否录像
now = '' # 当前时间字符窜
recordFile = '' # 录像文件名,用于命令行参数

### 脚本执行
print('执行MAME0.269版本:')
while((index > -1) and (index < len(ROMS))):
  ## 初始化
  needReplay = False
  now = datetime.now().strftime('%Y%m%d_%H%M%S')
  recordFile = 'tempRecord' # 默认录像文件
  print('当前时间:', now)
  ## 提示信息显示
  i = 0 # 临时变量
  while(i < len(ROMS)):
    if (i == len(ROMS)-1):
      print(f'{i+1:3} : {ROMS[i][1]:20}')
    else:
      print(f'{i+1:3} : {ROMS[i][1]:20}   {i+2:3} : {ROMS[i+1][1]:20}')
    i += 2
  ## 输入ROM编号,回车退出
  try:
    print('')
    index = int(input("输入rom编号并按回车执行,直接回车退出:"))-1
    romName = ROMS[index][0]
  except:
    exit(1)
  ## 输入录像要求,把nvram文件夹也要复制一份!
  try:
    index = int(input('需要专门录像输入1,临时录像输入2,不录像输入其他:'))
    if (index == 1):
      needReplay = True
      recordFile = romName+'_'+now
      shutil.copytree(f'nvram\{romName}', 
        f'nvram\{recordFile}', dirs_exist_ok=True)
    if (index == 2):
      needReplay = True
      shutil.copytree(f'nvram\{romName}', 
        f'nvram\{recordFile}', dirs_exist_ok=True)
  except:
    pass
  ## 执行mame命令行
  if (needReplay):
    command = f' {MAME} {romName} {PARAMS} -record {recordFile}'
  else:
    command = f' {MAME} {romName} {PARAMS}'
  os.system(command)
  print('\n')
  
## 结束
exit(0)
